#include<iostream>
#include<vector>
#include<unordered_map>
/*给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。*/

class Solution
{
    public:
    int subarraySub(std::vector<int>& nums,int k)
    {
        std::unordered_map<int,int> sums;
        sums[0] = 1;
        ins sum = 0,res = 0;
        for(const int& num : nums)
        {
            sum += num;
            if(sums.find(sum - k)!=sums.end())
            {
                res += sums[sum -k];
            }
            sums[sum]++;
        }
        return res;
    }

}